package cn.algorithm;


/**
 * @author: lizemin
 * @version: 1.0
 */
public class Test02 {
    //第一轮,从索引0开始
    // 假设第一个值就是最小值.
    //65, 24, 23, 54 , 12
    // a0 > a1, 那就将a1设为最小值.即最小值的索引设为1
    // a1 > a2, 将a2设为最小值, 即最小值的索引设为2
    // ...
    // a3 > a4, 发现a4更小, 即最小值的索引设为4, 找出了第一轮的最小值
    //第二轮, 从索引1开始比较.
    //第三轮, 从索引2开始

    //实现选择排序
    public static int[] selectionSort(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            int lowest_number_index = i;
            for (int j = i + 1; j < arr.length; j++) {//这个表示最小数后面的那个数.
                if (arr[lowest_number_index] > arr[j]){//如果发现后者更小, 就将索引设置为它.开始打擂台
                    lowest_number_index = j;
                }
            }
            //开始交换两个数的位置, 如果当前的最小值不是当前的默认值, 那么就需要进行交换
            if (lowest_number_index != i){
                int temp = arr[lowest_number_index];
                arr[lowest_number_index] = arr[i];
                arr[i] = temp;

            }
        }
        return arr;
    }

    //这是一个main方法,是程序的入口
    public static void main(String[] args) {
        int[] unsorted_array = new int[]{12,23,56,2,5};
        int[] sorted_array = selectionSort(unsorted_array);
        for (int i : sorted_array) {
            System.out.print(i+"\t");
        }

    }

}
